﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IPC.Communication.Framework.LogNet
{
    public interface ILogNet : IDisposable
    {
        event EventHandler<HslEventArgs> BeforeSaveToFile;

        LogSaveMode LogSaveMode
        {
            get;
        }

        LogStatistics LogNetStatistics
        {
            get;
            set;
        }

        bool ConsoleOutput
        {
            get;
            set;
        }

        void RecordMessage(HslMessageDegree degree, string keyWord, string text);

        void WriteDescrition(string description);

        void WriteDebug(string text);

        void WriteDebug(string keyWord, string text);

        void WriteError(string text);

        void WriteError(string keyWord, string text);

        void WriteException(string keyWord, Exception ex);

        void WriteException(string keyWord, string text, Exception ex);

        void WriteFatal(string text);

        void WriteFatal(string keyWord, string text);

        void WriteInfo(string text);

        void WriteInfo(string keyWord, string text);

        void WriteNewLine();

        void WriteAnyString(string text);

        void WriteWarn(string text);

        void WriteWarn(string keyWord, string text);

        void SetMessageDegree(HslMessageDegree degree);

        string[] GetExistLogFileNames();

        void FiltrateKeyword(string keyword);

        void RemoveFiltrate(string keyword);
    }
}
